package com.xuerhua.yxt.service;

import java.util.List;

import com.xuerhua.yxt.common.RspResult;
import com.xuerhua.yxt.model.Grid;
import com.xuerhua.yxt.model.KccsCourseInfo;
import com.xuerhua.yxt.model.KccsSignTime;
import com.xuerhua.yxt.model.KccsStudentSign;
import com.xuerhua.yxt.page.Page;
import com.xuerhua.yxt.reqVo.BaseQueryVO;
import com.xuerhua.yxt.reqVo.KccsCourseQueryVO;
import com.xuerhua.yxt.reqVo.KccsCourseReqVO;
import com.xuerhua.yxt.reqVo.KccsStudentSignReqVO;
import com.xuerhua.yxt.view.KccsCourseStudentSignView;
import com.xuerhua.yxt.view.KccsCourseView;

public interface IKccsCourseInfoService {

	int insertSelective(KccsCourseInfo record);

    KccsCourseInfo selectByPrimaryKey(Integer id);
    
    List<KccsCourseInfo> selectList(KccsCourseQueryVO vo);
    
    Grid selectListByPage(KccsCourseQueryVO vo);

    int updateByPrimaryKeySelective(KccsCourseInfo record);

    KccsCourseView selectViewById(KccsCourseQueryVO vo);
    
    void addAndUpdate(KccsCourseReqVO vo);
    
    List<KccsCourseStudentSignView> selectSignedListForClass(KccsCourseQueryVO vo);
    
    List<KccsCourseStudentSignView> selectNoSignListForClass(KccsCourseQueryVO vo);
    
    KccsCourseStudentSignView selectSignedCourseForStudent(KccsCourseQueryVO vo);
    
    RspResult insertSign(KccsStudentSignReqVO reqVO);
    
    RspResult updateChangeSign(KccsStudentSignReqVO reqVO);
    
    List<KccsCourseStudentSignView> selectSignListForParent(KccsCourseQueryVO vo);
    
    boolean isFullForCourseId(BaseQueryVO vo);
    
    List<KccsCourseStudentSignView> selectSignListForTeachingByCourseId(KccsCourseQueryVO vo);
    
    boolean isCourseSignLimit(KccsCourseQueryVO vo);
  //查询待审核的课程
    List<KccsCourseInfo> selectPendingList(Page<KccsCourseInfo> page);
    //查询已审核的课程
    List<KccsCourseInfo> selectApprovedList(Page<KccsCourseInfo> page);
    //查询我创建的课程
    List<KccsCourseInfo> selectMyCreateList(Integer teacherId);
    //查询任课的课程列表
    List<KccsCourseInfo> selectListForTeaching(Integer teacherId, Integer schoolId);
    //查看可报名的课程详情
    KccsCourseView selectSignCourseDetail(BaseQueryVO vo);
    //查看可报名的课程列表
    List<KccsCourseView> selectSignCourseList(KccsCourseQueryVO vo);
    //分页查询学员课程报名列表
    Grid selectSignListByPage(KccsCourseQueryVO vo);
    //查询课程学员统计
    Grid selectKccsStudentTotal(KccsCourseQueryVO vo);
    int delKccsCourse(List<String> list);
    //修改课程状态
    int updateBatchCourseStatus(List<String> list, Integer isAgree, Integer updaterId, String updater, Integer schoolId);
    //修改课程信息
    int updateBatchCourseInfo(List<KccsCourseInfo> list);
    RspResult updateApprovalCourse(KccsCourseReqVO vo);
    //修改课程报名截止时间
    int updateKccsEndDate(KccsSignTime record);
    //查询课程报名截止时间
    KccsSignTime selectKccsEndDate(Integer schoolId);
    //新增修改特长班名单
    int addSpecialSign(KccsStudentSign record);
    //批量新增学生名单
    int batchAddStudentSign(List<KccsStudentSign> list);
    int delStudentSignByIds(List<String> list);
}
